2475
11610
Fermé. Cette question a besoin de détails ou de clarté. Il n'accepte pas les réponses actuellement.
Vous souhaitez améliorer cette question? Ajoutez des détails et clarifiez le problème en éditant ce message.
Fermé il y a 1 an.
Améliorez cette question
Je fais un défi de code et je veux obtenir les 3 premières valeurs de mon tableau en spécifiant l'index de départ et en obtenant uniquement les premières (3 ou peut être de n'importe quelle longueur) valeurs de l'index de départ.
J'ai essayé ce code et cela fonctionne mais la structure du code est trop longue, alors comment puis-je raccourcir ce code pour qu'il soit facile à comprendre.
int n = 10;
double signature = nouveau double [] {1, 1, 1};
double [] ret = nouveau double [n];
double somme = 0;
ret [0] = signature [0];
ret [1] = signature [1];
ret [2] = signature [2];
int x, i;
pour (i = 0; i 
                                
En utilisant LINQ, vous pouvez essayer quelque chose comme ceci:
valeurs var = tableau.Skip (index)
.Pris)
.ToArray ();
Où index est l'index du premier élément et n le nombre d'éléments que vous souhaitez sélectionner.
Par exemple. https://dotnetfiddle.net/Pk1rwY
En remarque. L'utilisation de LINQ ne signifie pas que votre code serait plus rapide. Ce serait plus compact / lisible, etc. Pour évaluer la performance de votre code, vous devez utiliser quelque chose comme BenchmarkDotNet.
|
Pas de solution Linq:
private static T [] Extraire  (T [] source, int fromIndex, int length) {
if (null == source)
throw new ArgumentNullException (nameof (source));
sinon si (fromIndex <0)
lancer une nouvelle ArgumentOutOfRangeException (nameof (fromIndex),
"From Index doit être non négatif");
else if (longueur <0)
throw new ArgumentOutOfRangeException (nameof (longueur)
"La longueur doit être non négative");
if (fromIndex> = source.Length || length == 0)
retourne nouveau T [0];
T [] résultat = nouveau T [Math.Min (longueur, source.Longueur - fromIndex)];
Array.Copy (source, fromIndex, result, 0, result.Length);
résultat de retour;
}
ensuite
double [] signature = nouveau double [] {0, 1, 2, 3, 4, 5};
double [] ret = extrait (signature, 3, 2);
Console.Write (string.Join (",", ret));
Résultat:
3, 4
|
À partir de votre question, vous devez tirer parti des opérateurs .Take et .Skip.
var result = array.Skip (startingIndex) .Take (numberOfElements);
D'après votre code, il semble que vous essayez de faire quelque chose d'un peu différent, à savoir la somme des éléments. L'opérateur .Sum peut être utile ici.
|
Ce n'est pas la réponse que vous recherchez? Parcourez les autres questions marquées c # tableaux linq ou posez votre propre question.